function quickSort(arr) {
    if (arr.length <= 1) return [...arr]; // 直接返回副本
    
    const pivot = arr[Math.floor(arr.length / 2)]; // 基准元素
    const left = [];
    const right = [];
    const equal = [];
    
    for (const num of arr) {
        if (num < pivot) left.push(num);
        else if (num > pivot) right.push(num);
        else equal.push(num);
    }
    
    // 递归拼接左、中、右数组
    return [...quickSort(left), ...equal, ...quickSort(right)];
}

// 示例测试
const originalArr = [3, 1, 4, 1, 5, 9, 2, 6];
const sortedArr = quickSort(originalArr);

console.log(originalArr); // 输出: [3, 1, 4, 1, 5, 9, 2, 6]（原数组未修改）
console.log(sortedArr);    // 输出: [1, 1, 2, 3, 4, 5, 6, 9]